↳ ITRS
↳ ITRStoIDPProof
z
st(n, l) → stNat(>=@z(n, 0@z), n, l)
sort(l) → st(0@z, l)
if(FALSE, u, v) → v
member(n, cons(m, l)) → ||(=@z(n, m), member(n, l))
max(cons(u, l)) → if(>@z(u, max(l)), u, max(l))
cond1(TRUE, n, l) → cons(n, st(+@z(n, 1@z), l))
cond2(FALSE, n, l) → st(+@z(n, 1@z), l)
cond1(FALSE, n, l) → cond2(>@z(n, max(l)), n, l)
cond2(TRUE, n, l) → nil
if(TRUE, u, v) → u
member(n, nil) → FALSE
stNat(TRUE, n, l) → cond1(member(n, l), n, l)
max(nil) → 0@z
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
z
st(n, l) → stNat(>=@z(n, 0@z), n, l)
sort(l) → st(0@z, l)
if(FALSE, u, v) → v
member(n, cons(m, l)) → ||(=@z(n, m), member(n, l))
max(cons(u, l)) → if(>@z(u, max(l)), u, max(l))
cond1(TRUE, n, l) → cons(n, st(+@z(n, 1@z), l))
cond2(FALSE, n, l) → st(+@z(n, 1@z), l)
cond1(FALSE, n, l) → cond2(>@z(n, max(l)), n, l)
cond2(TRUE, n, l) → nil
if(TRUE, u, v) → u
member(n, nil) → FALSE
stNat(TRUE, n, l) → cond1(member(n, l), n, l)
max(nil) → 0@z
(0) -> (2), if ((l[0] →* cons(u[2], l[2])))
(0) -> (3), if ((l[0] →* cons(u[3], l[3])))
(1) -> (7), if ((n[1] →* n[7])∧(l[1] →* l[7])∧(>@z(n[1], max(l[1])) →* FALSE))
(3) -> (2), if ((l[3] →* cons(u[2], l[2])))
(3) -> (3), if ((l[3] →* cons(u[3]a, l[3]a)))
(4) -> (8), if ((l[4] →* cons(m[8], l[8]))∧(n[4] →* n[8]))
(5) -> (10), if ((l[5] →* l[10]))
(6) -> (0), if ((n[6] →* n[0])∧(l[6] →* l[0])∧(member(n[6], l[6]) →* FALSE))
(6) -> (1), if ((n[6] →* n[1])∧(l[6] →* l[1])∧(member(n[6], l[6]) →* FALSE))
(6) -> (9), if ((n[6] →* n[9])∧(l[6] →* l[9])∧(member(n[6], l[6]) →* TRUE))
(7) -> (10), if ((l[7] →* l[10])∧(+@z(n[7], 1@z) →* n[10]))
(8) -> (8), if ((l[8] →* cons(m[8]a, l[8]a))∧(n[8] →* n[8]a))
(9) -> (10), if ((l[9] →* l[10])∧(+@z(n[9], 1@z) →* n[10]))
(10) -> (4), if ((n[10] →* n[4])∧(l[10] →* l[4])∧(>=@z(n[10], 0@z) →* TRUE))
(10) -> (6), if ((n[10] →* n[6])∧(l[10] →* l[6])∧(>=@z(n[10], 0@z) →* TRUE))
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
z
if(FALSE, u, v) → v
member(n, cons(m, l)) → ||(=@z(n, m), member(n, l))
max(cons(u, l)) → if(>@z(u, max(l)), u, max(l))
if(TRUE, u, v) → u
member(n, nil) → FALSE
max(nil) → 0@z
(0) -> (2), if ((l[0] →* cons(u[2], l[2])))
(0) -> (3), if ((l[0] →* cons(u[3], l[3])))
(1) -> (7), if ((n[1] →* n[7])∧(l[1] →* l[7])∧(>@z(n[1], max(l[1])) →* FALSE))
(3) -> (2), if ((l[3] →* cons(u[2], l[2])))
(3) -> (3), if ((l[3] →* cons(u[3]a, l[3]a)))
(4) -> (8), if ((l[4] →* cons(m[8], l[8]))∧(n[4] →* n[8]))
(5) -> (10), if ((l[5] →* l[10]))
(6) -> (0), if ((n[6] →* n[0])∧(l[6] →* l[0])∧(member(n[6], l[6]) →* FALSE))
(6) -> (1), if ((n[6] →* n[1])∧(l[6] →* l[1])∧(member(n[6], l[6]) →* FALSE))
(6) -> (9), if ((n[6] →* n[9])∧(l[6] →* l[9])∧(member(n[6], l[6]) →* TRUE))
(7) -> (10), if ((l[7] →* l[10])∧(+@z(n[7], 1@z) →* n[10]))
(8) -> (8), if ((l[8] →* cons(m[8]a, l[8]a))∧(n[8] →* n[8]a))
(9) -> (10), if ((l[9] →* l[10])∧(+@z(n[9], 1@z) →* n[10]))
(10) -> (4), if ((n[10] →* n[4])∧(l[10] →* l[4])∧(>=@z(n[10], 0@z) →* TRUE))
(10) -> (6), if ((n[10] →* n[6])∧(l[10] →* l[6])∧(>=@z(n[10], 0@z) →* TRUE))
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDP
z
if(FALSE, u, v) → v
member(n, cons(m, l)) → ||(=@z(n, m), member(n, l))
max(cons(u, l)) → if(>@z(u, max(l)), u, max(l))
if(TRUE, u, v) → u
member(n, nil) → FALSE
max(nil) → 0@z
(3) -> (3), if ((l[3] →* cons(u[3]a, l[3]a)))
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDP
(3) -> (3), if ((l[3] →* cons(u[3]a, l[3]a)))
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
(1) (l[3]=cons(u[3]1, l[3]1)∧l[3]1=cons(u[3]2, l[3]2) ⇒ MAX(cons(u[3]1, l[3]1))≥MAX(l[3]1)∧(UIncreasing(MAX(l[3]1)), ≥))
(2) (MAX(cons(u[3]1, cons(u[3]2, l[3]2)))≥MAX(cons(u[3]2, l[3]2))∧(UIncreasing(MAX(l[3]1)), ≥))
(3) ((UIncreasing(MAX(l[3]1)), ≥)∧0 ≥ 0)
(4) ((UIncreasing(MAX(l[3]1)), ≥)∧0 ≥ 0)
(5) (0 ≥ 0∧(UIncreasing(MAX(l[3]1)), ≥))
(6) (0 = 0∧0 = 0∧0 = 0∧0 ≥ 0∧(UIncreasing(MAX(l[3]1)), ≥))
POL(cons(x1, x2)) = -1 + x2
POL(TRUE) = 0
POL(FALSE) = 0
POL(MAX(x1)) = -1 + (-1)x1
POL(undefined) = 0
MAX(cons(u[3], l[3])) → MAX(l[3])
MAX(cons(u[3], l[3])) → MAX(l[3])
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDependencyGraphProof
↳ IDP
↳ IDP
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
z
if(FALSE, u, v) → v
member(n, cons(m, l)) → ||(=@z(n, m), member(n, l))
max(cons(u, l)) → if(>@z(u, max(l)), u, max(l))
if(TRUE, u, v) → u
member(n, nil) → FALSE
max(nil) → 0@z
(8) -> (8), if ((l[8] →* cons(m[8]a, l[8]a))∧(n[8] →* n[8]a))
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
(8) -> (8), if ((l[8] →* cons(m[8]a, l[8]a))∧(n[8] →* n[8]a))
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
(1) (l[8]=cons(m[8]1, l[8]1)∧l[8]1=cons(m[8]2, l[8]2)∧n[8]1=n[8]2∧n[8]=n[8]1 ⇒ MEMBER(n[8]1, cons(m[8]1, l[8]1))≥MEMBER(n[8]1, l[8]1)∧(UIncreasing(MEMBER(n[8]1, l[8]1)), ≥))
(2) (MEMBER(n[8], cons(m[8]1, cons(m[8]2, l[8]2)))≥MEMBER(n[8], cons(m[8]2, l[8]2))∧(UIncreasing(MEMBER(n[8]1, l[8]1)), ≥))
(3) ((UIncreasing(MEMBER(n[8]1, l[8]1)), ≥)∧1 ≥ 0)
(4) ((UIncreasing(MEMBER(n[8]1, l[8]1)), ≥)∧1 ≥ 0)
(5) (1 ≥ 0∧(UIncreasing(MEMBER(n[8]1, l[8]1)), ≥))
(6) (0 = 0∧0 = 0∧(UIncreasing(MEMBER(n[8]1, l[8]1)), ≥)∧1 ≥ 0∧0 = 0∧0 = 0)
POL(cons(x1, x2)) = 2 + x2
POL(MEMBER(x1, x2)) = -1 + x2 + (-1)x1
POL(TRUE) = 0
POL(FALSE) = 0
POL(undefined) = 0
MEMBER(n[8], cons(m[8], l[8])) → MEMBER(n[8], l[8])
MEMBER(n[8], cons(m[8], l[8])) → MEMBER(n[8], l[8])
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDPNonInfProof
↳ IDP
↳ IDependencyGraphProof
↳ IDP
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
z
if(FALSE, u, v) → v
member(n, cons(m, l)) → ||(=@z(n, m), member(n, l))
max(cons(u, l)) → if(>@z(u, max(l)), u, max(l))
if(TRUE, u, v) → u
member(n, nil) → FALSE
max(nil) → 0@z
(6) -> (9), if ((n[6] →* n[9])∧(l[6] →* l[9])∧(member(n[6], l[6]) →* TRUE))
(10) -> (6), if ((n[10] →* n[6])∧(l[10] →* l[6])∧(>=@z(n[10], 0@z) →* TRUE))
(6) -> (1), if ((n[6] →* n[1])∧(l[6] →* l[1])∧(member(n[6], l[6]) →* FALSE))
(1) -> (7), if ((n[1] →* n[7])∧(l[1] →* l[7])∧(>@z(n[1], max(l[1])) →* FALSE))
(7) -> (10), if ((l[7] →* l[10])∧(+@z(n[7], 1@z) →* n[10]))
(9) -> (10), if ((l[9] →* l[10])∧(+@z(n[9], 1@z) →* n[10]))
st(x0, x1)
sort(x0)
if(FALSE, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(TRUE, x0, x1)
cond2(FALSE, x0, x1)
cond1(FALSE, x0, x1)
cond2(TRUE, x0, x1)
if(TRUE, x0, x1)
member(x0, nil)
stNat(TRUE, x0, x1)
max(nil)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
ST(n[10], l[10]) → STNAT(greatereq_int(n[10], pos(0)), n[10], l[10])
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
STNAT(true, n[6], l[6]) → COND1(member(n[6], l[6]), n[6], l[6])
if(false, u, v) → v
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
if(true, u, v) → u
member(n, nil) → false
max(nil) → pos(0)
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(neg(x), pos(y)) → minus_nat(y, x)
plus_int(neg(x), neg(y)) → neg(plus_nat(x, y))
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
greatereq_int(pos(x), pos(0)) → true
greatereq_int(neg(0), pos(0)) → true
greatereq_int(neg(0), neg(y)) → true
greatereq_int(pos(x), neg(y)) → true
greatereq_int(pos(0), pos(s(y))) → false
greatereq_int(neg(x), pos(s(y))) → false
greatereq_int(neg(s(x)), pos(0)) → false
greatereq_int(neg(s(x)), neg(0)) → false
greatereq_int(pos(s(x)), pos(s(y))) → greatereq_int(pos(x), pos(y))
greatereq_int(neg(s(x)), neg(s(y))) → greatereq_int(neg(x), neg(y))
st(x0, x1)
sort(x0)
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(true, x0, x1)
cond2(false, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
if(true, x0, x1)
member(x0, nil)
stNat(true, x0, x1)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
ST(n[10], l[10]) → STNAT(greatereq_int(n[10], pos(0)), n[10], l[10])
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
STNAT(true, n[6], l[6]) → COND1(member(n[6], l[6]), n[6], l[6])
greatereq_int(pos(x), pos(0)) → true
greatereq_int(neg(0), pos(0)) → true
greatereq_int(neg(s(x)), pos(0)) → false
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
st(x0, x1)
sort(x0)
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
cond1(true, x0, x1)
cond2(false, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
if(true, x0, x1)
member(x0, nil)
stNat(true, x0, x1)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))
st(x0, x1)
sort(x0)
cond1(true, x0, x1)
cond2(false, x0, x1)
cond1(false, x0, x1)
cond2(true, x0, x1)
stNat(true, x0, x1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
ST(n[10], l[10]) → STNAT(greatereq_int(n[10], pos(0)), n[10], l[10])
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
STNAT(true, n[6], l[6]) → COND1(member(n[6], l[6]), n[6], l[6])
greatereq_int(pos(x), pos(0)) → true
greatereq_int(neg(0), pos(0)) → true
greatereq_int(neg(s(x)), pos(0)) → false
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))
ST(neg(s(x0)), y1) → STNAT(false, neg(s(x0)), y1)
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
ST(neg(0), y1) → STNAT(true, neg(0), y1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
STNAT(true, n[6], l[6]) → COND1(member(n[6], l[6]), n[6], l[6])
ST(neg(s(x0)), y1) → STNAT(false, neg(s(x0)), y1)
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
ST(neg(0), y1) → STNAT(true, neg(0), y1)
greatereq_int(pos(x), pos(0)) → true
greatereq_int(neg(0), pos(0)) → true
greatereq_int(neg(s(x)), pos(0)) → false
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, n[6], l[6]) → COND1(member(n[6], l[6]), n[6], l[6])
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
ST(neg(0), y1) → STNAT(true, neg(0), y1)
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
greatereq_int(pos(x), pos(0)) → true
greatereq_int(neg(0), pos(0)) → true
greatereq_int(neg(s(x)), pos(0)) → false
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, n[6], l[6]) → COND1(member(n[6], l[6]), n[6], l[6])
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
ST(neg(0), y1) → STNAT(true, neg(0), y1)
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))
greatereq_int(pos(x0), pos(0))
greatereq_int(neg(0), pos(0))
greatereq_int(neg(0), neg(x0))
greatereq_int(pos(x0), neg(x1))
greatereq_int(pos(0), pos(s(x0)))
greatereq_int(neg(x0), pos(s(x1)))
greatereq_int(neg(s(x0)), pos(0))
greatereq_int(neg(s(x0)), neg(0))
greatereq_int(pos(s(x0)), pos(s(x1)))
greatereq_int(neg(s(x0)), neg(s(x1)))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, n[6], l[6]) → COND1(member(n[6], l[6]), n[6], l[6])
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
ST(neg(0), y1) → STNAT(true, neg(0), y1)
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
ST(neg(0), y1) → STNAT(true, neg(0), y1)
Used ordering: Polynomial interpretation [POLO]:
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, n[6], l[6]) → COND1(member(n[6], l[6]), n[6], l[6])
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
POL(0) = 1
POL(COND1(x1, x2, x3)) = 0
POL(COND2(x1, x2, x3)) = 0
POL(ST(x1, x2)) = x1
POL(STNAT(x1, x2, x3)) = 0
POL(cons(x1, x2)) = 0
POL(equal_int(x1, x2)) = 0
POL(false) = 0
POL(greater_int(x1, x2)) = 0
POL(if(x1, x2, x3)) = 0
POL(max(x1)) = 0
POL(member(x1, x2)) = 0
POL(minus_nat(x1, x2)) = 0
POL(neg(x1)) = x1
POL(nil) = 0
POL(or(x1, x2)) = 0
POL(plus_int(x1, x2)) = 0
POL(plus_nat(x1, x2)) = 0
POL(pos(x1)) = 0
POL(s(x1)) = 0
POL(true) = 0
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(s(x), 0) → pos(s(x))
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), s(y)) → minus_nat(x, y)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, n[6], l[6]) → COND1(member(n[6], l[6]), n[6], l[6])
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ QDP
↳ RemovalProof
↳ Narrowing
ST(pos(x0), y1, x_removed) → STNAT(true, pos(x0), y1, x_removed)
STNAT(true, n[6], l[6], x_removed) → COND1(member(n[6], l[6]), n[6], l[6], x_removed)
COND1(true, n[9], l[9], x_removed) → ST(plus_int(x_removed, n[9]), l[9], x_removed)
COND1(false, n[1], l[1], x_removed) → COND2(greater_int(n[1], max(l[1])), n[1], l[1], x_removed)
COND2(false, n[7], l[7], x_removed) → ST(plus_int(x_removed, n[7]), l[7], x_removed)
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ QDP
↳ Narrowing
ST(pos(x0), y1, x_removed) → STNAT(true, pos(x0), y1, x_removed)
STNAT(true, n[6], l[6], x_removed) → COND1(member(n[6], l[6]), n[6], l[6], x_removed)
COND1(true, n[9], l[9], x_removed) → ST(plus_int(x_removed, n[9]), l[9], x_removed)
COND1(false, n[1], l[1], x_removed) → COND2(greater_int(n[1], max(l[1])), n[1], l[1], x_removed)
COND2(false, n[7], l[7], x_removed) → ST(plus_int(x_removed, n[7]), l[7], x_removed)
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
COND1(true, n[9], l[9]) → ST(plus_int(pos(s(0)), n[9]), l[9])
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(plus_nat(s(0), x1)), y1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(plus_nat(s(0), x1)), y1)
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
COND1(true, pos(x1), y1) → ST(pos(s(plus_nat(0, x1))), y1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(s(plus_nat(0, x1))), y1)
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
COND1(true, pos(x1), y1) → ST(pos(s(x1)), y1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
COND1(false, n[1], l[1]) → COND2(greater_int(n[1], max(l[1])), n[1], l[1])
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(s(x1)), y1)
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
COND1(false, y0, nil) → COND2(greater_int(y0, pos(0)), y0, nil)
COND1(false, y0, cons(x0, x1)) → COND2(greater_int(y0, if(greater_int(x0, max(x1)), x0, max(x1))), y0, cons(x0, x1))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
COND2(false, n[7], l[7]) → ST(plus_int(pos(s(0)), n[7]), l[7])
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(s(x1)), y1)
COND1(false, y0, nil) → COND2(greater_int(y0, pos(0)), y0, nil)
COND1(false, y0, cons(x0, x1)) → COND2(greater_int(y0, if(greater_int(x0, max(x1)), x0, max(x1))), y0, cons(x0, x1))
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
COND2(false, pos(x1), y1) → ST(pos(plus_nat(s(0), x1)), y1)
COND2(false, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(s(x1)), y1)
COND1(false, y0, nil) → COND2(greater_int(y0, pos(0)), y0, nil)
COND1(false, y0, cons(x0, x1)) → COND2(greater_int(y0, if(greater_int(x0, max(x1)), x0, max(x1))), y0, cons(x0, x1))
COND2(false, pos(x1), y1) → ST(pos(plus_nat(s(0), x1)), y1)
COND2(false, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
plus_int(pos(x), neg(y)) → minus_nat(x, y)
plus_int(pos(x), pos(y)) → pos(plus_nat(x, y))
plus_nat(0, x) → x
plus_nat(s(x), y) → s(plus_nat(x, y))
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(s(x1)), y1)
COND1(false, y0, nil) → COND2(greater_int(y0, pos(0)), y0, nil)
COND1(false, y0, cons(x0, x1)) → COND2(greater_int(y0, if(greater_int(x0, max(x1)), x0, max(x1))), y0, cons(x0, x1))
COND2(false, pos(x1), y1) → ST(pos(plus_nat(s(0), x1)), y1)
COND2(false, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
greater_int(pos(0), pos(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
plus_nat(s(x), y) → s(plus_nat(x, y))
plus_nat(0, x) → x
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
plus_int(pos(x0), neg(x1))
plus_int(neg(x0), pos(x1))
plus_int(neg(x0), neg(x1))
plus_int(pos(x0), pos(x1))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(s(x1)), y1)
COND1(false, y0, nil) → COND2(greater_int(y0, pos(0)), y0, nil)
COND1(false, y0, cons(x0, x1)) → COND2(greater_int(y0, if(greater_int(x0, max(x1)), x0, max(x1))), y0, cons(x0, x1))
COND2(false, pos(x1), y1) → ST(pos(plus_nat(s(0), x1)), y1)
COND2(false, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
greater_int(pos(0), pos(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
plus_nat(s(x), y) → s(plus_nat(x, y))
plus_nat(0, x) → x
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
COND2(false, pos(x1), y1) → ST(pos(s(plus_nat(0, x1))), y1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(s(x1)), y1)
COND1(false, y0, nil) → COND2(greater_int(y0, pos(0)), y0, nil)
COND1(false, y0, cons(x0, x1)) → COND2(greater_int(y0, if(greater_int(x0, max(x1)), x0, max(x1))), y0, cons(x0, x1))
COND2(false, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND2(false, pos(x1), y1) → ST(pos(s(plus_nat(0, x1))), y1)
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
greater_int(pos(0), pos(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
plus_nat(s(x), y) → s(plus_nat(x, y))
plus_nat(0, x) → x
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ Rewriting
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(s(x1)), y1)
COND1(false, y0, nil) → COND2(greater_int(y0, pos(0)), y0, nil)
COND1(false, y0, cons(x0, x1)) → COND2(greater_int(y0, if(greater_int(x0, max(x1)), x0, max(x1))), y0, cons(x0, x1))
COND2(false, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND2(false, pos(x1), y1) → ST(pos(s(plus_nat(0, x1))), y1)
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
plus_nat(0, x) → x
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))
COND2(false, pos(x1), y1) → ST(pos(s(x1)), y1)
↳ ITRS
↳ ITRStoIDPProof
↳ IDP
↳ UsableRulesProof
↳ IDP
↳ IDependencyGraphProof
↳ AND
↳ IDP
↳ IDP
↳ IDP
↳ IDPtoQDPProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ RemovalProof
↳ RemovalProof
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ Rewriting
↳ QDP
ST(pos(x0), y1) → STNAT(true, pos(x0), y1)
STNAT(true, x0, nil) → COND1(false, x0, nil)
STNAT(true, x0, cons(x1, x2)) → COND1(or(equal_int(x0, x1), member(x0, x2)), x0, cons(x1, x2))
COND1(true, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND1(true, pos(x1), y1) → ST(pos(s(x1)), y1)
COND1(false, y0, nil) → COND2(greater_int(y0, pos(0)), y0, nil)
COND1(false, y0, cons(x0, x1)) → COND2(greater_int(y0, if(greater_int(x0, max(x1)), x0, max(x1))), y0, cons(x0, x1))
COND2(false, neg(x1), y1) → ST(minus_nat(s(0), x1), y1)
COND2(false, pos(x1), y1) → ST(pos(s(x1)), y1)
equal_int(pos(0), pos(0)) → true
equal_int(neg(0), pos(0)) → true
equal_int(neg(0), neg(0)) → true
equal_int(pos(0), neg(0)) → true
equal_int(pos(0), pos(s(y))) → false
equal_int(neg(0), pos(s(y))) → false
equal_int(pos(0), neg(s(y))) → false
equal_int(neg(0), neg(s(y))) → false
equal_int(pos(s(x)), pos(0)) → false
equal_int(pos(s(x)), neg(0)) → false
equal_int(neg(s(x)), pos(0)) → false
equal_int(neg(s(x)), neg(0)) → false
equal_int(pos(s(x)), neg(s(y))) → false
equal_int(neg(s(x)), pos(s(y))) → false
equal_int(pos(s(x)), pos(s(y))) → equal_int(pos(x), pos(y))
equal_int(neg(s(x)), neg(s(y))) → equal_int(neg(x), neg(y))
member(n, cons(m, l)) → or(equal_int(n, m), member(n, l))
member(n, nil) → false
or(false, false) → false
or(false, true) → true
or(true, false) → true
or(true, true) → true
minus_nat(s(x), 0) → pos(s(x))
minus_nat(s(x), s(y)) → minus_nat(x, y)
minus_nat(0, 0) → pos(0)
minus_nat(0, s(y)) → neg(s(y))
max(cons(u, l)) → if(greater_int(u, max(l)), u, max(l))
max(nil) → pos(0)
greater_int(pos(0), pos(0)) → false
greater_int(neg(0), pos(0)) → false
greater_int(pos(s(x)), pos(0)) → true
greater_int(neg(s(x)), pos(0)) → false
greater_int(pos(0), neg(0)) → false
greater_int(neg(0), neg(0)) → false
greater_int(pos(0), pos(s(y))) → false
greater_int(neg(0), pos(s(y))) → false
greater_int(pos(0), neg(s(y))) → true
greater_int(neg(0), neg(s(y))) → true
greater_int(pos(s(x)), neg(0)) → true
greater_int(neg(s(x)), neg(0)) → false
greater_int(pos(s(x)), neg(s(y))) → true
greater_int(neg(s(x)), pos(s(y))) → false
greater_int(pos(s(x)), pos(s(y))) → greater_int(pos(x), pos(y))
greater_int(neg(s(x)), neg(s(y))) → greater_int(neg(x), neg(y))
if(false, u, v) → v
if(true, u, v) → u
plus_nat(0, x) → x
if(false, x0, x1)
member(x0, cons(x1, x2))
max(cons(x0, x1))
if(true, x0, x1)
member(x0, nil)
max(nil)
or(false, false)
or(false, true)
or(true, false)
or(true, true)
equal_int(pos(0), pos(0))
equal_int(neg(0), pos(0))
equal_int(neg(0), neg(0))
equal_int(pos(0), neg(0))
equal_int(pos(0), pos(s(x0)))
equal_int(neg(0), pos(s(x0)))
equal_int(pos(0), neg(s(x0)))
equal_int(neg(0), neg(s(x0)))
equal_int(pos(s(x0)), pos(0))
equal_int(pos(s(x0)), neg(0))
equal_int(neg(s(x0)), pos(0))
equal_int(neg(s(x0)), neg(0))
equal_int(pos(s(x0)), neg(s(x1)))
equal_int(neg(s(x0)), pos(s(x1)))
equal_int(pos(s(x0)), pos(s(x1)))
equal_int(neg(s(x0)), neg(s(x1)))
greater_int(pos(0), pos(0))
greater_int(pos(0), neg(0))
greater_int(neg(0), pos(0))
greater_int(neg(0), neg(0))
greater_int(pos(0), pos(s(x0)))
greater_int(neg(0), pos(s(x0)))
greater_int(pos(0), neg(s(x0)))
greater_int(neg(0), neg(s(x0)))
greater_int(pos(s(x0)), pos(0))
greater_int(neg(s(x0)), pos(0))
greater_int(pos(s(x0)), neg(0))
greater_int(neg(s(x0)), neg(0))
greater_int(pos(s(x0)), neg(s(x1)))
greater_int(neg(s(x0)), pos(s(x1)))
greater_int(pos(s(x0)), pos(s(x1)))
greater_int(neg(s(x0)), neg(s(x1)))
plus_nat(0, x0)
plus_nat(s(x0), x1)
minus_nat(0, 0)
minus_nat(0, s(x0))
minus_nat(s(x0), 0)
minus_nat(s(x0), s(x1))